package com.thinkit.bigdata.core.util.changeLan;

import org.apache.log4j.Logger;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by shi on 2017/7/11.
 */
public class ChangeLan {

    private static Logger logger = Logger.getLogger(ChangeLan.class);

    private static String[] old = {"ا", "ە", "ې", "ى", "و", "ۇ", "ۆ", "ۈ", "ب", "پ", "ت", "ن", "ل", "م", "ك", "ق", "ف", "غ", "ھ", "ج", "خ", "ۋ", "ي", "ز", "ژ", "د", "ر", "ڭ", "س", "ش", "چ", "گ", "ئ"};
    private static String[] news = {"a", "E", "e", "i", "o", "u", "O", "v", "b", "p", "t", "n", "l", "m", "k", "K", "f", "G", "H", "j", "h", "w", "y", "z", "Z", "d", "r", "N", "s", "x", "q", "g", ""};
    private static String[] latin = {"a", "a6", "e", "i", "o", "u", "o6", "v", "b", "p", "t", "n", "l", "m", "k", "q", "f", "g6", "h", "j", "x", "w", "y", "z", "z6", "d", "r", "n6", "s", "s6", "c", "g", ""};

    private static String[] oldReg = {"ا", "ە", "ې", "ى", "و", "ۇ", "ۆ", "ۈ", "ب", "پ", "ت", "ن", "ل", "م", "ك", "ق", "ف", "غ", "ھ", "ج", "خ", "ۋ", "ي", "ز", "ژ", "د", "ر", "ڭ", "س", "ش", "چ", "گ", "ئ"};
    private static String[] newReg = {"a", "E", "e", "i", "o", "u", "O", "v", "b", "p", "t", "n", "l", "m", "k", "K", "f", "G", "H", "j", "h", "w", "y", "z", "Z", "d", "r", "N", "s", "x", "q", "g"};
    private static String[] latinReg = {"o6", "a6", "g6", "z6", "n6", "s6", "f", "v", "b", "p", "t", "n", "l", "m", "k", "q", "e", "i", "h", "j", "x", "w", "y", "z", "o", "d", "r", "u", "s", "a", "c", "g"};


    public static String changeStt(String stt, String type) {
        logger.info("【新旧维语转换方法】stt【"+stt+"】type【"+type+"】");
        String newStt = null;
        Map<String, String[]> chars = new HashMap<>();
        chars.put("old", old);
        chars.put("news", news);
        chars.put("latin", latin);
        for (String s : latinReg) {
            //判断字符串中是否包含这个小字符串
            boolean status = stt.contains(s);
            if (status) {
                //包含，找到对应的下标，替换
                int i = -1;
                for (int j = 0; j < latin.length; j++) {
                    if (latin[j] == s) {
                        i = j;
                        break;
                    }
                }
                newStt = stt.replace(s, chars.get(type)[i]);
                stt = newStt;
            }
        }
        logger.info("【新旧维语转换方法】newStt【"+newStt+"】");
        return newStt;
    }

    public static String changeStt(String stt) {
        logger.info("【新旧维语转换方法】stt【"+stt+"】");
        String newStt = null;
        for (String s : oldReg) {
            //判断字符串中是否包含这个小字符串
            boolean status = stt.contains(s);
            if (status) {
                //包含，找到对应的下标，替换
                int i = -1;
                for (int j = 0; j < old.length; j++) {
                    if (old[j] == s) {
                        i = j;
                        break;
                    }
                }
                newStt = stt.replace(s, news[i]);
                stt = newStt;
            }
        }
        logger.info("【新旧维语转换方法】newStt【"+newStt+"】");
        return newStt;
    }

    public static void main(String[] args) {
//        List<String> stts = new ArrayList<>();
//        stts.add("wa6yci");
//        stts.add("wa6ycilal.mamsa6n");
//        stts.add("a6mdias6uya6rga6barsa.mya6na6bir");
//        stts.add("wa6yci");
//        stts.add("gvl.bac.samya6");
//        stts.add("na6bila6ndega6n.");
//        stts.add("cubilma6yma6nunibilidig6an");
//        stts.add("ya6r.niko6rvpnom");
//        stts.add("ur.nidukan.ni");
//        stts.add("a6ma6tjan.nin6birinipocyiga6nda6ka6ma6");
//        stts.add("is6la6.msa6.nda6yma6nma6nbir");
//        stts.add("na6cca6yas6.tadisa6mjan.nimaddilarya6rda6");
//        String type = "news";
//        for (String s : stts) {
//            changeStt(s, type);
//        }

        List<String> stts = new ArrayList<>();
        stts.add("ۋەھشىي");
        stts.add("ھەئە");
        stts.add("ھەئە دەپ بولمامدۇ");
        stts.add("ھەئە شۇنىڭ بىلەن");
        stts.add("ئىشقىلىپ ھەئە");
        stts.add("ھەئە ئىشقىلىپ");
        stts.add("ھەئە");
        for (String s : stts) {
            System.out.println(changeStt(s));
        }
    }
}
